Interruptions are used to alert processors that action is to be taken. There are different types of interruptions, including input/output (I/O) interruptions, which are initiated by I/O components of a processing environment. For example, adapters external, but coupled to, a central processing complex initiate I/O interruptions for processors of the central processing complex.
In some processing environments, including one or more of those in which the central processing complex is based on the z/Architecture offered by International Business Machines Corporation, an I/O interruption initiated by an external adapter is first seen as an Alert attention to a processor of the environment. That Alert attention is processed by firmware to determine whether an initiative is to be set. This determination requires communication between different firmware components and communication between firmware and the adapter.
Should it be determined that the initiative is to be set, then the processor sets the initiative in an Interruption Queue Header (IQH) under control of a lock. When the queue transitions from the empty to the non-empty state, the processor broadcasts a command to all of the processors of the environment instructing the processors to set the initiative at the processors. Each processor sets a bit in a pending interruption array of that processor.
When a processor is enabled for an I/O interruption that is made pending, an attempt is made to handle the interruption. Since multiple processors can be enabled for the same interruption, a race condition exists. Arbitration for the interruption is performed by the hardware, and one processor will be chosen to be in control of the initiative for that interruption.